Skip to content

fix(engine): restore Firehose live-path tracing in payload validator#11

Merged
sduchesneau merged 5 commits into
firehose/2.xfrom
wrangler/fix-broken-firehose-2-x-version
Jun 4, 2026
Merged

fix(engine): restore Firehose live-path tracing in payload validator#11
sduchesneau merged 5 commits into
firehose/2.xfrom
wrangler/fix-broken-firehose-2-x-version

Conversation

@maoueh

@maoueh maoueh commented Jun 3, 2026

Copy link
Copy Markdown

Live blocks arriving through the engine API (newPayload / forkchoiceUpdated) stopped being
traced on firehose/2.x: the Firehose live-path hooks in the engine-tree payload validator were
dropped during a merge, leaving only the historical/stage execution path instrumented.

Restores the hooks in validate_block_with_state:

  • SignatureFields bound on TxTy<N> (validator method, EngineValidator impl, and the
    EngineValidatorBuilder impl in node/builder).
  • FirehoseBlockTracer guard lifecycle: start before execution, mark_verified() after
    post-execution validation, drop-on-error discards the block.
  • execute_and_trace_block dispatch (gated on is_tracer_initialized()) wrapping the executor in
    FirehoseWrappedExecutor; the genesis marker (block 1) falls through to the untraced path.

Adds a regression test (crates/engine/tree/tests/firehose_live_tracing.rs) that drives a real
node through newPayload with a buffer-backed global tracer and asserts FIRE BLOCK lines are
emitted for live blocks — verified to fail when the dispatch is absent. Supported by a new
reth_firehose::init_tracer_with_buffer helper for output capture.

Note: this branch also carries the in-progress v2.2.0-fh release-prep commits (CHANGELOG /
gitignore).

maoueh added 5 commits May 20, 2026 18:51
Add CHANGELOG.md documenting Firehose-specific changes since reth v2.2.0:
flashblocks support, SynchronizedStdout, init_tracer Config refactor,
public prestate helpers in reth-firehose-tests, and firehose-tracer 5.1.1.
…dator

Blocks arriving through the engine API (newPayload / forkchoiceUpdated) were no
longer traced on firehose/2.x: the live-path hooks in the engine-tree payload
validator had been dropped during a merge, leaving only the historical/stage
execution path instrumented.

Restore the SignatureFields bound, the FirehoseBlockTracer guard lifecycle
(start before execution, mark_verified after post-execution validation, drop on
error), and the execute_and_trace_block dispatch that wraps the executor in
FirehoseWrappedExecutor. Propagate the SignatureFields bound to the
EngineValidatorBuilder impl.
Drives a real EthereumNode through engine_newPayload (the validate_block_with_state
path) with a buffer-backed global tracer and asserts FIRE BLOCK lines are emitted
for the live blocks. Fails if the live-path dispatch is missing.

Add reth_firehose::init_tracer_with_buffer to install a buffer-backed global
tracer for output capture. The test lives in its own integration-test binary so
the process-wide tracer stays isolated from the rest of the suite.

@sduchesneau sduchesneau left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@sduchesneau sduchesneau merged commit 3230608 into firehose/2.x Jun 4, 2026
2 checks passed
@sduchesneau sduchesneau deleted the wrangler/fix-broken-firehose-2-x-version branch June 4, 2026 14:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants